Serial data communication between two link partners in a digital communication system is often accomplished according to the general configuration of FIG. 1. FIG. 1 shows a digital communication link 100 comprising a system #1 101 and a system #2 102 connected by a communication link infrastructure 103. The system #1 101 and the system #2 102 may include computer systems transmitting streams of serial data to each other over the communication link infrastructure 103. The communication link infrastructure 103 may comprise copper wire, optical fiber, or a wireless connection.
The system #1 101 and the system #2 102 each have a limit to the amount of data that may be buffered up during reception. At some point, the buffers in system #1 101 and/or system #2 102 may get filled up if data is being sent to the systems faster than the systems can empty out the buffers and process the data.
A concept called flow control is traditionally used to handle the problem of buffers getting filled up. In general, with flow control, if the buffer of the system #1 101 is getting filled up, the system #1 101 tells the system #2 102 to stop transmitting data for awhile until the system #1 101 can get caught up. The system #2 102 may respond in the same manner to the system #1 101 when the buffer of the system #2 102 is getting filled up.
In a modem-based system, a signal on a physical pin was typically used to indicate to another system a flow control status. For example, the signal on a physical pin between two systems may indicate “ready to send” or “not ready to send” conditions. Flow control status information is also typically sent between two systems as an additional frame that is part of the data stream. The additional frame contains the flow control status information that tells the other side of the communication link what to do (e.g., stop transmitting data for now).
However, when a system is in the process of transmitting a current frame of data, the system will continue to transmit that frame of data until the entire frame has been transmitted. A system does not typically stop in mid-stream of transmitting a frame of data. As a result, when a first system detects that its buffer is getting full, it may not be able to get the other system to stop transmitting right away because the other system may be in the middle of transmitting a long frame of data.
Also, with full duplex communication between two systems, if a first system detects that its buffer is filling up and the first system just started transmitting a long frame of data to a second system, the first system typically must wait until it is done transmitting the long frame of data before it can tell the second system to stop transmitting. As a result, systems typically need to have large buffers to accommodate such worst case scenarios.
Further limitations and disadvantages of conventional and traditional approaches will become apparent to one of skill in the art, through comparison of such systems with the present invention as set forth in the remainder of the present application with reference to the drawings.